// http 服务 和llm 服务结合起来
import http from 'http';
import OpenAI from 'openai';
import url from 'url';
import {
  config
} from 'dotenv';
config({
  path: '.env'
});
console.log(process.env.OPENAI_API_KEY, '////');

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL:'https://api.agicto.cn/v1'
})
// aigc
const getCompletion = async (prompt, model='gpt-3.5-turbo') => {
  const messages = [{
    role: 'user',
    content: prompt   //将用户传入的 prompt 作为消息内容，传递给大模型
  }]
  const result = await client.chat.completions.create({
    model,
    messages,
    temperature: 0.1
  })
  return result.choices[0].message.content;
}

// const result = await getCompletion('你好');
// console.log(result);
// createServer可以创建一个http服务器里面 可以创建一个新的、更复杂的对象。
// http.createServer 创建的服务器是后端接收前端请求、处理业务逻辑、返回响应的核心载体，没有它，前端的 fetch 请求会 “无家可归”，你的 AI 问答功能也无法实现
http.createServer(async (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*'); //解决了跨域问题“允许所有来源的前端请求访问我”
  // req, question  data
  const parsedUrl = url.parse(req.url, true);//http://localhost:1314/?question=${question}&data=${JSON.stringify(users)}`会将请求路径？之后的数据解析成对象
//   console.log(parsedUrl);
const prompt = `
    ${parsedUrl.query.data}
    请根据上面的JSON数据，回答${parsedUrl.query.question} 这个问题。
`
const result = await getCompletion(prompt); // 第二个参数设置了默认值
let info = {
    result
};
res.status = 200;
res.setHeader('Content-Type', 'application/json');
  res.end(JSON.stringify(info));
}).listen(1314)